JavaでMySQLのデータベースから取得
はじめに
テーブルからデータベースを取得し、その内容を標準出力する流れです。 ドライバ設定などは前々回、前回をご覧ください。
取得に使うテーブル
前回から値を変更してますが作りは同じです ^_^
コード
package com.developersio; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class FetchValueClass { static final String URL = "jdbc:mysql://localhost/cm"; static final String USERNAME = "user"; static final String PASSWORD = "pass"; public static void main(String[] args) { String sql = "SELECT * FROM music;"; try ( Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD); PreparedStatement statement = connection.prepareStatement(sql); ) { ResultSet result = statement.executeQuery(); result.next(); System.out.println(result.getString(1)); System.out.println(result.getString(2)); System.out.println(result.getString(3)); System.out.println(result.getString("id")); System.out.println(result.getString("name")); System.out.println(result.getString("title")); System.out.println(""); result.next(); System.out.println(result.getString(1)); System.out.println(result.getString(2)); System.out.println(result.getString(3)); System.out.println(result.getString("id")); System.out.println(result.getString("name")); System.out.println(result.getString("title")); } catch (SQLException e) { e.printStackTrace(); } } }
出力結果
1 Kerri Chandler Atmosphere 1 Kerri Chandler Atmosphere 2 Blaze Elevation 2 Blaze Elevation
解説
SQL文の設定。 テーブルを丸ごと取得します。
String sql = "SELECT * FROM music;";
PreparedStatement にSQL文をセットしているので、そのまま executeQuery() を実行します。 返り値は ResultSet 、中身は取得結果です。
ResultSet result = statement.executeQuery();
next() で取得した内容の先頭の行にフォーカスします。
result.next();
先頭の行にフォーカスをしているので、getString(取得したい列番号) で先頭行の値を取得しています。 getString("カラム名") はカラム(列)を指定して取得しています。 つまり、25〜27行目と28〜30行目は同じカラムを指定している事になるので、出力結果の通り、同じ内容が繰り返し出力されます。
System.out.println(result.getString(1)); System.out.println(result.getString(2)); System.out.println(result.getString(3)); System.out.println(result.getString("id")); System.out.println(result.getString("name")); System.out.println(result.getString("title"));
next() で次の行にフォーカスして、その内容を取得しています。 25〜30行目と同じく繰り返し出力されます。
result.next(); System.out.println(result.getString(1)); System.out.println(result.getString(2)); System.out.println(result.getString(3)); System.out.println(result.getString("id")); System.out.println(result.getString("name")); System.out.println(result.getString("title"));
まとめ
前回に引き続き、SQLインジェクション対策として PreparedStatement を使用しました。
分かりやすくなる為に冗長的なコードになっているので、実際にコーディングする際は24〜40行目を下記の様にすると同じ様な結果になります。
while (result.next()) { System.out.println(result.getString(1)); System.out.println(result.getString(2)); System.out.println(result.getString(3)); }